home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / maestro / source / unsupprt / guide / src / libguide / gud_ctns.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-15  |  19.8 KB  |  982 lines

  1. /*
  2.  * This file is a product of Sun Microsystems, Inc. and is provided for
  3.  * unrestricted use provided that this legend is included on all tape
  4.  * media and as a part of the software program in whole or part.  Users
  5.  * may copy or modify this file without charge, but are not authorized to
  6.  * license or distribute it to anyone else except as part of a product
  7.  * or program developed by the user.
  8.  * 
  9.  * THIS FILE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
  10.  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
  11.  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
  12.  * 
  13.  * This file is provided with no support and without any obligation on the
  14.  * part of Sun Microsystems, Inc. to assist in its use, correction,
  15.  * modification or enhancement.
  16.  * 
  17.  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
  18.  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS FILE
  19.  * OR ANY PART THEREOF.
  20.  * 
  21.  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
  22.  * or profits or other special, indirect and consequential damages, even
  23.  * if Sun has been advised of the possibility of such damages.
  24.  * 
  25.  * Sun Microsystems, Inc.
  26.  * 2550 Garcia Avenue
  27.  * Mountain View, California  94043
  28.  */
  29.  
  30. #ifndef lint
  31. static char     sccsid[] = "@(#)guide_actions.c    2.22 91/10/15 Copyright 1989 Sun Microsystems";
  32. #endif
  33.  
  34. /*
  35.  * This file contains tables of default messages to be loaded
  36.  * into guide during start up time.
  37.  */
  38.  
  39. #include "guide.h"
  40. #include "guide_actions.h"
  41.  
  42.  
  43. /*
  44.  * The complete list of default events.
  45.  */
  46. G_MSG_STRUCT    *
  47. G_all_default_events()
  48. {
  49.     static G_MSG_STRUCT events[] =
  50.     {
  51.      {G_USER_TYPE,   NOTIFY,        G_VOID_TYPE},
  52.     {G_USER_TYPE,   MOUSE_SELECT,   G_VOID_TYPE},
  53.     {G_USER_TYPE,   MOUSE_ADJUST,   G_VOID_TYPE},
  54.     {G_USER_TYPE,   MOUSE_MENU,     G_VOID_TYPE},
  55.     {G_USER_TYPE,   ANYEVENT,       G_VOID_TYPE},
  56.     {G_USER_TYPE,   DOUBLECLICK,    G_VOID_TYPE},
  57.     {G_USER_TYPE,   ENTER,          G_VOID_TYPE},
  58.     {G_USER_TYPE,   EXIT,           G_VOID_TYPE},
  59.     {G_USER_TYPE,   RESIZE,         G_VOID_TYPE},
  60.     {G_USER_TYPE,   KEYPRESS,       G_VOID_TYPE},
  61.     {G_USER_TYPE,    REPAINT,    G_VOID_TYPE},
  62.     {G_USER_TYPE,    DROPPED_UPON,    G_VOID_TYPE},
  63.     {G_USER_TYPE,    DRAGGED_FROM,    G_VOID_TYPE},
  64.         0,
  65.     };
  66.     return events;
  67. }
  68.  
  69. /*
  70.  * The complete list of default messages.
  71.  */
  72. G_MSG_STRUCT    *
  73. G_all_default_messages()
  74. {
  75.     static G_MSG_STRUCT actions[] =
  76.     {
  77.     {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  78.     {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  79.     {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  80.     {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  81.     {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  82.     {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  83.     {G_USER_TYPE,        SETLEFTFOOTER,    G_STRING_TYPE},
  84.     {G_USER_TYPE,        GETLEFTFOOTER,    G_VOID_TYPE},
  85.     {G_USER_TYPE,        SETRIGHTFOOTER,    G_STRING_TYPE},
  86.     {G_USER_TYPE,        GETRIGHTFOOTER, G_VOID_TYPE},
  87.     {G_USER_TYPE,        SETVALUENUMBER, G_STRING_TYPE},
  88.     {G_USER_TYPE,        GETVALUENUMBER, G_VOID_TYPE},
  89.     {G_USER_TYPE,        LOADTEXTFILE,    G_STRING_TYPE},
  90.     {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  91.     {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  92.         0,
  93.     };
  94.     return actions;
  95. }    
  96.  
  97. /*
  98.  * The complete list of default receivers.
  99.  */
  100. G_TYPES *
  101. G_all_default_receivers()
  102. {
  103.     static G_TYPES types[] =
  104.     {
  105.         G_BASE_WINDOW,
  106.         G_BUTTON,
  107.         G_CANVAS_PANE,
  108.         G_CONTROL_AREA,
  109.         G_DROP_TARGET,
  110.         G_GAUGE,
  111.         G_GROUP,
  112.         G_MENU,
  113.         G_MENU_ITEMS,
  114.         G_MESSAGE,
  115.         G_POPUP_WINDOW,
  116.         G_SCROLLING_LIST,
  117.         G_SETTING,
  118.         G_SETTING_ITEMS,
  119.         G_SLIDER,
  120.         G_TERM_PANE,
  121.         G_TEXT_FIELD,
  122.         G_TEXT_PANE,
  123.         -1,
  124.     };
  125.     return types;
  126. }
  127.  
  128. /*
  129.  * Return the valid events for a given type of object.
  130.  */
  131. G_MSG_STRUCT    *
  132. #ifdef __STDC__
  133. G_default_events(G_TYPES type)
  134. #else
  135. G_default_events(type)
  136.     G_TYPES        type;
  137. #endif
  138. {
  139.     switch (type)
  140.     {
  141.     case G_BASE_WINDOW:
  142.     {
  143.         static G_MSG_STRUCT events[] =
  144.         {
  145.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  146.         {G_USER_TYPE,    MOUSE_ADJUST,    G_VOID_TYPE},
  147.         {G_USER_TYPE,    MOUSE_MENU,     G_VOID_TYPE},
  148.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  149.         {G_USER_TYPE,    DOUBLECLICK,    G_VOID_TYPE},
  150.         {G_USER_TYPE,    ENTER,        G_VOID_TYPE},
  151.         {G_USER_TYPE,     EXIT,         G_VOID_TYPE},
  152.         {G_USER_TYPE,    RESIZE,        G_VOID_TYPE},
  153.         {G_USER_TYPE,    KEYPRESS,    G_VOID_TYPE},
  154.             0,
  155.         };
  156.         return events;
  157.     }
  158.     case G_BUTTON:
  159.     {
  160.         static G_MSG_STRUCT events[] =
  161.         {
  162.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  163.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  164.         {G_USER_TYPE,     MOUSE_MENU,     G_VOID_TYPE},
  165.             0,
  166.         };
  167.         return events;
  168.     }
  169.     case G_CANVAS_PANE:
  170.     {
  171.         static G_MSG_STRUCT events[] =
  172.         {
  173.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  174.         {G_USER_TYPE,    MOUSE_ADJUST,     G_VOID_TYPE},
  175.         {G_USER_TYPE,    MOUSE_MENU,     G_VOID_TYPE},
  176.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  177.         {G_USER_TYPE,    DOUBLECLICK,    G_VOID_TYPE},
  178.         {G_USER_TYPE,    ENTER,        G_VOID_TYPE},
  179.         {G_USER_TYPE,    EXIT,        G_VOID_TYPE},
  180.         {G_USER_TYPE,    REPAINT,    G_VOID_TYPE},
  181.         {G_USER_TYPE,    RESIZE,        G_VOID_TYPE},
  182.         {G_USER_TYPE,    KEYPRESS,    G_VOID_TYPE},
  183.         {G_USER_TYPE,    DROPPED_UPON,    G_VOID_TYPE},
  184.             0,
  185.         };
  186.         return events;
  187.     }
  188.     case G_CONTROL_AREA:
  189.     {
  190.         static G_MSG_STRUCT events[] =
  191.         {
  192.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  193.         {G_USER_TYPE,    MOUSE_ADJUST,     G_VOID_TYPE},
  194.         {G_USER_TYPE,    MOUSE_MENU,     G_VOID_TYPE},
  195.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  196.         {G_USER_TYPE,    DOUBLECLICK,    G_VOID_TYPE},
  197.         {G_USER_TYPE,    ENTER,        G_VOID_TYPE},
  198.         {G_USER_TYPE,    EXIT,        G_VOID_TYPE},
  199.         {G_USER_TYPE,    KEYPRESS,    G_VOID_TYPE},
  200.             0,
  201.         };
  202.         return events;
  203.     }
  204.     case G_DROP_TARGET:
  205.     {
  206.         static G_MSG_STRUCT events[] =
  207.         {
  208.         {G_USER_TYPE,    DROPPED_UPON,    G_VOID_TYPE},
  209.         {G_USER_TYPE,    DRAGGED_FROM,    G_VOID_TYPE},
  210.             0,
  211.         };
  212.         return events;
  213.     }
  214.     case G_GAUGE:
  215.     {
  216.         static G_MSG_STRUCT events[] =
  217.         {
  218.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  219.         {G_USER_TYPE,    MOUSE_ADJUST,     G_VOID_TYPE},
  220.         {G_USER_TYPE,    MOUSE_MENU,     G_VOID_TYPE},
  221.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  222.             0,
  223.         };
  224.         return events;
  225.     }
  226.     case G_GROUP:
  227.     {
  228.         static G_MSG_STRUCT events[] = 0;
  229.         return events;
  230.     }
  231.     case G_MENU:
  232.     {
  233.         static G_MSG_STRUCT events[] =
  234.         {
  235.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  236.             0,
  237.         };
  238.         return events;
  239.     }
  240.     case G_MENU_ITEMS:
  241.     {
  242.         static G_MSG_STRUCT events[] =
  243.         {
  244.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  245.             0,
  246.         };
  247.         return events;
  248.     }
  249.     case G_MESSAGE:
  250.     {
  251.         static G_MSG_STRUCT events[] =
  252.         {
  253.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  254.         {G_USER_TYPE,    MOUSE_ADJUST,     G_VOID_TYPE},
  255.         {G_USER_TYPE,    MOUSE_MENU,     G_VOID_TYPE},
  256.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  257.             0,
  258.         };
  259.         return events;
  260.     }
  261.     case G_POPUP_WINDOW:
  262.     {
  263.         static G_MSG_STRUCT events[] =
  264.         {
  265.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  266.         {G_USER_TYPE,    MOUSE_ADJUST,     G_VOID_TYPE},
  267.         {G_USER_TYPE,    MOUSE_MENU,    G_VOID_TYPE},
  268.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  269.         {G_USER_TYPE,    DOUBLECLICK,    G_VOID_TYPE},
  270.         {G_USER_TYPE,    DONE,        G_VOID_TYPE},
  271.         {G_USER_TYPE,    ENTER,        G_VOID_TYPE},
  272.         {G_USER_TYPE,    EXIT,        G_VOID_TYPE},
  273.         {G_USER_TYPE,    RESIZE,        G_VOID_TYPE},
  274.         {G_USER_TYPE,    KEYPRESS,    G_VOID_TYPE},
  275.             0,
  276.         };
  277.         return events;
  278.     }
  279.     case G_SCROLLING_LIST:
  280.     {
  281.         static G_MSG_STRUCT events[] =
  282.         {
  283.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  284.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  285.         {G_USER_TYPE,    MOUSE_MENU,    G_VOID_TYPE},
  286.         {G_USER_TYPE,    DROPPED_UPON,     G_VOID_TYPE},
  287.             0,
  288.         };
  289.         return events;
  290.     }
  291.     case G_SETTING:
  292.     {
  293.         static G_MSG_STRUCT events[] =
  294.         {
  295.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  296.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  297.             0,
  298.         };
  299.         return events;
  300.     }
  301.     case G_SETTING_ITEMS:
  302.     {
  303.         static G_MSG_STRUCT events[] =
  304.         {
  305.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  306.             0,
  307.         };
  308.         return events;
  309.     }
  310.     case G_SLIDER:
  311.     {
  312.         static G_MSG_STRUCT events[] =
  313.         {
  314.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  315.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  316.             0,
  317.         };
  318.         return events;
  319.     }
  320.     case G_TERM_PANE:
  321.     {        
  322.         static G_MSG_STRUCT events[] =
  323.         {
  324.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  325.         {G_USER_TYPE,    MOUSE_ADJUST,     G_VOID_TYPE},
  326.         {G_USER_TYPE,    MOUSE_MENU,     G_VOID_TYPE},
  327.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  328.         {G_USER_TYPE,    DOUBLECLICK,    G_VOID_TYPE},
  329.         {G_USER_TYPE,    ENTER,        G_VOID_TYPE},
  330.         {G_USER_TYPE,    EXIT,        G_VOID_TYPE},
  331.         {G_USER_TYPE,    KEYPRESS,    G_VOID_TYPE},
  332.             0,
  333.         };
  334.         return events;
  335.     }
  336.     case G_TEXT_FIELD:
  337.     {
  338.         static G_MSG_STRUCT events[] =
  339.         {
  340.         {G_USER_TYPE,    NOTIFY,     G_VOID_TYPE},
  341.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  342.             0,
  343.         };
  344.         return events;
  345.     }
  346.     case G_TEXT_PANE:
  347.     {
  348.         static G_MSG_STRUCT events[] =
  349.         {
  350.         {G_USER_TYPE,    MOUSE_SELECT,     G_VOID_TYPE},
  351.         {G_USER_TYPE,    MOUSE_ADJUST,     G_VOID_TYPE},
  352.         {G_USER_TYPE,    MOUSE_MENU,     G_VOID_TYPE},
  353.         {G_USER_TYPE,    ANYEVENT,    G_VOID_TYPE},
  354.         {G_USER_TYPE,    DOUBLECLICK,    G_VOID_TYPE},
  355.         {G_USER_TYPE,    ENTER,        G_VOID_TYPE},
  356.         {G_USER_TYPE,    EXIT,        G_VOID_TYPE},
  357.         {G_USER_TYPE,    KEYPRESS,    G_VOID_TYPE},
  358.             0,
  359.         };
  360.         return events;
  361.     }
  362.     default:
  363.     {
  364.         static G_MSG_STRUCT events[] = 0;
  365.         return events;
  366.     }
  367.     }
  368. }
  369.  
  370.  
  371.  
  372. /*
  373.  * Return a list of valid messages given an object type.
  374.  */ 
  375. G_MSG_STRUCT    *
  376. #ifdef __STDC__
  377. G_default_messages(G_TYPES type)
  378. #else
  379. G_default_messages(type)
  380.     G_TYPES        type;
  381. #endif
  382. {
  383.     switch (type)
  384.     {
  385.     case G_BASE_WINDOW:
  386.     {
  387.         static G_MSG_STRUCT actions[] =
  388.         {
  389.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  390.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  391.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  392.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  393.         {G_USER_TYPE,        SETLEFTFOOTER,    G_STRING_TYPE},
  394.         {G_USER_TYPE,        GETLEFTFOOTER,    G_VOID_TYPE},
  395.         {G_USER_TYPE,        SETRIGHTFOOTER,    G_STRING_TYPE},
  396.         {G_USER_TYPE,        GETRIGHTFOOTER, G_VOID_TYPE},
  397.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  398.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  399.             0,
  400.         };
  401.         return actions;
  402.     }
  403.     case G_BUTTON:
  404.     {
  405.         static G_MSG_STRUCT actions[] =
  406.         {
  407.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  408.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  409.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  410.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  411.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  412.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  413.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  414.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  415.             0,
  416.         };
  417.         return actions;
  418.     }
  419.     case G_CANVAS_PANE:
  420.     {
  421.         static G_MSG_STRUCT actions[] =
  422.         {
  423.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  424.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  425.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  426.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  427.             0,
  428.         };
  429.         return actions;
  430.     }
  431.     case G_CONTROL_AREA:
  432.     {
  433.         static G_MSG_STRUCT actions[] =
  434.         {
  435.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  436.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  437.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  438.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  439.             0,
  440.         };
  441.         return actions;
  442.     }
  443.     case G_DROP_TARGET:
  444.     {
  445.         static G_MSG_STRUCT actions[] =
  446.         {
  447.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  448.             0,
  449.         };
  450.         return actions;
  451.     }
  452.     case G_GAUGE:
  453.     {
  454.         static G_MSG_STRUCT actions[] =
  455.         {
  456.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  457.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  458.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  459.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  460.         {G_USER_TYPE,        SETVALUENUMBER, G_STRING_TYPE},
  461.         {G_USER_TYPE,        GETVALUENUMBER, G_VOID_TYPE},
  462.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  463.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  464.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  465.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  466.             0,
  467.         };
  468.         return actions;
  469.     }
  470.     case G_GROUP:
  471.     {
  472.         static G_MSG_STRUCT actions[] =
  473.         {
  474.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  475.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  476.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  477.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  478.             0,
  479.         };
  480.         return actions;
  481.     }
  482.     case G_MENU:
  483.     {
  484.         static G_MSG_STRUCT actions[] =
  485.         {
  486.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  487.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  488.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  489.             0,
  490.         };
  491.         return actions;
  492.     }
  493.     case G_MENU_ITEMS:
  494.     {
  495.         static G_MSG_STRUCT actions[] =
  496.         {
  497.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  498.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  499.             0,
  500.         };
  501.         return actions;
  502.     }
  503.     case G_MESSAGE:
  504.     {
  505.         static G_MSG_STRUCT actions[] =
  506.         {
  507.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  508.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  509.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  510.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  511.         {G_USER_TYPE,        SETLABEL,     G_STRING_TYPE},
  512.         {G_USER_TYPE,        GETLABEL,     G_VOID_TYPE},
  513.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  514.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  515.             0,
  516.         };
  517.         return actions;
  518.     }
  519.     case G_POPUP_WINDOW:
  520.     {
  521.         static G_MSG_STRUCT actions[] =
  522.         {
  523.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  524.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  525.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  526.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  527.         {G_USER_TYPE,        SETLEFTFOOTER,    G_STRING_TYPE},
  528.         {G_USER_TYPE,        GETLEFTFOOTER,    G_VOID_TYPE},
  529.         {G_USER_TYPE,        SETRIGHTFOOTER,    G_STRING_TYPE},
  530.         {G_USER_TYPE,        GETRIGHTFOOTER, G_VOID_TYPE},
  531.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  532.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  533.             0,
  534.         };
  535.         return actions;
  536.     }
  537.     case G_SCROLLING_LIST:
  538.     {
  539.         static G_MSG_STRUCT actions[] =
  540.         {
  541.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  542.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  543.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  544.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  545.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  546.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  547.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  548.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  549.             0,
  550.         };
  551.         return actions;
  552.     }
  553.     case G_SETTING:
  554.     {
  555.         static G_MSG_STRUCT actions[] =
  556.         {
  557.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  558.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  559.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  560.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  561.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  562.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  563.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  564.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  565.             0,
  566.         };
  567.         return actions;
  568.     }
  569.     case G_SETTING_ITEMS:
  570.     {
  571.         static G_MSG_STRUCT actions[] =
  572.         {
  573.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  574.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  575.             0,
  576.         };
  577.         return actions;
  578.     }
  579.     case G_SLIDER:
  580.     {
  581.         static G_MSG_STRUCT actions[] =
  582.         {
  583.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  584.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  585.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  586.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  587.         {G_USER_TYPE,        SETVALUENUMBER,    G_INT_TYPE},
  588.         {G_USER_TYPE,        GETVALUENUMBER,    G_VOID_TYPE},
  589.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  590.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  591.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  592.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  593.             0,
  594.         };
  595.         return actions;
  596.     }
  597.     case G_TERM_PANE:
  598.     {
  599.         static G_MSG_STRUCT actions[] = 
  600.         {
  601.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  602.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  603.             0,
  604.         };
  605.         return actions;
  606.     }
  607.     case G_TEXT_FIELD:
  608.     {
  609.         static G_MSG_STRUCT actions[] =
  610.         {
  611.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  612.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  613.         {G_USER_TYPE,        ENABLE,        G_VOID_TYPE},
  614.         {G_USER_TYPE,        DISABLE,    G_VOID_TYPE},
  615.         {G_USER_TYPE,        SETVALUESTRING, G_STRING_TYPE},
  616.         {G_USER_TYPE,        GETVALUESTRING,    G_VOID_TYPE},
  617.         {G_USER_TYPE,        SETVALUENUMBER, G_INT_TYPE},
  618.         {G_USER_TYPE,        GETVALUENUMBER,    G_VOID_TYPE},
  619.         {G_USER_TYPE,        SETLABEL,    G_STRING_TYPE},
  620.         {G_USER_TYPE,        GETLABEL,    G_VOID_TYPE},
  621.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  622.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  623.             0,
  624.         };
  625.         return actions;
  626.     }
  627.     case G_TEXT_PANE:
  628.     {
  629.         static G_MSG_STRUCT actions[] =
  630.         {
  631.         {G_USER_TYPE,        SHOW,        G_VOID_TYPE},
  632.         {G_USER_TYPE,        HIDE,        G_VOID_TYPE},
  633.         {G_USER_TYPE,        LOADTEXTFILE,    G_STRING_TYPE},
  634.         {G_FUNCTION_TYPE,    CALLFUNCTION,    G_VOID_TYPE},
  635.         {G_CODE_TYPE,        EXECUTECODE,    G_STRING_TYPE},
  636.             0,
  637.         };
  638.         return actions;
  639.     }
  640.     default:
  641.     {
  642.         static G_MSG_STRUCT actions[] = 0;
  643.         return actions;
  644.     }
  645.     }
  646. }
  647.  
  648. /*
  649.  * Return a list of valid receivers given an object type.
  650.  */
  651. G_TYPES    *
  652. #ifdef __STDC__
  653. G_default_receivers(G_TYPES type)
  654. #else
  655. G_default_receivers(type)
  656.     G_TYPES        type;
  657. #endif
  658. {
  659.     switch (type)
  660.     {
  661.     case G_BASE_WINDOW:
  662.     {
  663.         static G_TYPES types[] =
  664.         {
  665.             G_BASE_WINDOW,
  666.             -1,
  667.         };
  668.         return types;
  669.     }
  670.     case G_BUTTON:
  671.     {
  672.         static G_TYPES types[] =
  673.         {
  674.             G_BASE_WINDOW,
  675.             G_BUTTON,
  676.             G_CANVAS_PANE,
  677.             G_CONTROL_AREA,
  678.             G_GAUGE,
  679.             G_GROUP,
  680.             G_MENU,
  681.             G_MENU_ITEMS,
  682.             G_MESSAGE,
  683.             G_POPUP_WINDOW,
  684.             G_SCROLLING_LIST,
  685.             G_SETTING,
  686.             G_SETTING_ITEMS,
  687.             G_SLIDER,
  688.             G_TERM_PANE,
  689.             G_TEXT_FIELD,
  690.             G_TEXT_PANE,
  691.             -1,
  692.         };
  693.         return types;
  694.     }
  695.     case G_CANVAS_PANE:
  696.     {
  697.         static G_TYPES types[] =
  698.         {
  699.             G_CANVAS_PANE,
  700.             G_MENU,
  701.             -1,
  702.         };
  703.         return types;
  704.     }
  705.     case G_CONTROL_AREA:
  706.     {
  707.         static G_TYPES types[] =
  708.         {
  709.             G_CONTROL_AREA,
  710.             G_MENU,
  711.             -1,
  712.         }; 
  713.         return types;
  714.     }
  715.     case G_DROP_TARGET:
  716.     {
  717.         static G_TYPES types[] =
  718.         {
  719.             G_DROP_TARGET,
  720.             -1,
  721.         }; 
  722.         return types;
  723.     }
  724.     case G_GAUGE:
  725.     {
  726.         static G_TYPES types[] =
  727.         {
  728.             G_BASE_WINDOW,
  729.             G_BUTTON,
  730.             G_CANVAS_PANE,
  731.             G_CONTROL_AREA,
  732.             G_GAUGE,
  733.             G_GROUP,
  734.             G_MESSAGE,
  735.             G_POPUP_WINDOW,
  736.             G_SCROLLING_LIST,
  737.             G_SLIDER,
  738.             G_TERM_PANE,
  739.             G_TEXT_FIELD,
  740.             G_TEXT_PANE,
  741.             -1,
  742.         };
  743.         return types;
  744.     }
  745.     case G_GROUP:
  746.     {
  747.         static G_TYPES types[] =
  748.         {
  749.             G_BASE_WINDOW,
  750.                         G_BUTTON,
  751.                         G_CANVAS_PANE,
  752.                         G_CONTROL_AREA,
  753.                         G_GAUGE,
  754.                         G_GROUP,
  755.                         G_MENU,
  756.                         G_MENU_ITEMS,
  757.                         G_MESSAGE,
  758.                         G_POPUP_WINDOW,
  759.                         G_SCROLLING_LIST,
  760.                         G_SETTING,
  761.                         G_SETTING_ITEMS,
  762.                         G_SLIDER,
  763.                         G_TERM_PANE,
  764.                         G_TEXT_FIELD,
  765.                         G_TEXT_PANE,
  766.                         -1,
  767.                 };
  768.     }    
  769.     case G_MENU:
  770.     {
  771.         static G_TYPES types[] =
  772.         { 
  773.             G_BASE_WINDOW,
  774.             G_BUTTON,
  775.             G_CANVAS_PANE,
  776.             G_CONTROL_AREA,
  777.             G_GAUGE,
  778.             G_GROUP,
  779.             G_MENU,
  780.             G_MENU_ITEMS,
  781.             G_MESSAGE,
  782.             G_POPUP_WINDOW,
  783.             G_SCROLLING_LIST,
  784.             G_SETTING,
  785.             G_SETTING_ITEMS,
  786.             G_SLIDER,
  787.             G_TERM_PANE,
  788.             G_TEXT_FIELD,
  789.             G_TEXT_PANE,
  790.             -1,
  791.         };
  792.         return types;
  793.     }
  794.     case G_MENU_ITEMS:
  795.     {
  796.         static G_TYPES types[] =
  797.         { 
  798.             G_BASE_WINDOW,
  799.             G_BUTTON,
  800.             G_CANVAS_PANE,
  801.             G_CONTROL_AREA,
  802.             G_GAUGE,
  803.             G_GROUP,
  804.             G_MENU,
  805.             G_MENU_ITEMS,
  806.             G_MESSAGE,
  807.             G_POPUP_WINDOW,
  808.             G_SCROLLING_LIST,
  809.             G_SETTING,
  810.             G_SETTING_ITEMS,
  811.             G_SLIDER,
  812.             G_TERM_PANE,
  813.             G_TEXT_FIELD,
  814.             G_TEXT_PANE,
  815.             -1,
  816.         };
  817.         return types;
  818.     }
  819.     case G_MESSAGE:
  820.     {
  821.         static G_TYPES types[] =
  822.         {
  823.             G_MESSAGE,
  824.             -1,
  825.         }; 
  826.         return types;
  827.     }
  828.     case G_POPUP_WINDOW: 
  829.     {
  830.         static G_TYPES types[] =
  831.         {
  832.             G_POPUP_WINDOW,
  833.             -1,
  834.         }; 
  835.         return types;
  836.     }
  837.     case G_SCROLLING_LIST: 
  838.     {
  839.         static G_TYPES types[] =
  840.         { 
  841.             G_BASE_WINDOW,
  842.             G_BUTTON,
  843.             G_CANVAS_PANE,
  844.             G_CONTROL_AREA,
  845.             G_GAUGE,
  846.             G_GROUP,
  847.             G_MENU,
  848.             G_MENU_ITEMS,
  849.             G_MESSAGE,
  850.             G_POPUP_WINDOW,
  851.             G_SCROLLING_LIST,
  852.             G_SETTING,
  853.             G_SETTING_ITEMS,
  854.             G_SLIDER,
  855.             G_TERM_PANE,
  856.             G_TEXT_FIELD,
  857.             G_TEXT_PANE,
  858.             -1,
  859.         };
  860.         return types;
  861.     }
  862.     case G_SETTING: 
  863.     {
  864.         static G_TYPES types[] =
  865.         { 
  866.             G_BASE_WINDOW,
  867.             G_BUTTON,
  868.             G_CANVAS_PANE,
  869.             G_CONTROL_AREA,
  870.             G_GAUGE,
  871.             G_GROUP,
  872.             G_MESSAGE,
  873.             G_POPUP_WINDOW,
  874.             G_SCROLLING_LIST,
  875.             G_SETTING,
  876.             G_SETTING_ITEMS,
  877.             G_SLIDER,
  878.             G_TERM_PANE,
  879.             G_TEXT_FIELD,
  880.             G_TEXT_PANE,
  881.             -1,
  882.         };
  883.         return types;
  884.     }
  885.     case G_SETTING_ITEMS: 
  886.     {
  887.         static G_TYPES types[] =
  888.         { 
  889.             G_BASE_WINDOW,
  890.             G_BUTTON,
  891.             G_CANVAS_PANE,
  892.             G_CONTROL_AREA,
  893.             G_GAUGE,
  894.             G_GROUP,
  895.             G_MENU_ITEMS,
  896.             G_MESSAGE,
  897.             G_POPUP_WINDOW,
  898.             G_SCROLLING_LIST,
  899.             G_SETTING,
  900.             G_SETTING_ITEMS,
  901.             G_SLIDER,
  902.             G_TERM_PANE,
  903.             G_TEXT_FIELD,
  904.             G_TEXT_PANE,
  905.             -1,
  906.         };
  907.         return types;
  908.     }
  909.     case G_SLIDER: 
  910.     {
  911.         static G_TYPES types[] =
  912.         { 
  913.             G_BASE_WINDOW,
  914.             G_BUTTON,
  915.             G_CANVAS_PANE,
  916.             G_CONTROL_AREA,
  917.             G_GAUGE,
  918.             G_GROUP,
  919.             G_MESSAGE,
  920.             G_POPUP_WINDOW,
  921.             G_SCROLLING_LIST,
  922.             G_SETTING,
  923.             G_SETTING_ITEMS,
  924.             G_SLIDER,
  925.             G_TERM_PANE,
  926.             G_TEXT_FIELD,
  927.             G_TEXT_PANE,
  928.             -1,
  929.         };
  930.         return types;
  931.     }
  932.     case G_TERM_PANE:
  933.     {
  934.         static G_TYPES types[] =
  935.         {
  936.             G_TERM_PANE,
  937.             -1,
  938.         }; 
  939.         return types;
  940.     }
  941.     case G_TEXT_FIELD: 
  942.     {
  943.         static G_TYPES types[] =
  944.         { 
  945.             G_BASE_WINDOW,
  946.             G_BUTTON,
  947.             G_CANVAS_PANE,
  948.             G_CONTROL_AREA,
  949.             G_GAUGE,
  950.             G_GROUP,
  951.             G_MESSAGE,
  952.             G_POPUP_WINDOW,
  953.             G_SCROLLING_LIST,
  954.             G_SETTING,
  955.             G_SETTING_ITEMS,
  956.             G_SLIDER,
  957.             G_TERM_PANE,
  958.             G_TEXT_FIELD,
  959.             G_TEXT_PANE,
  960.             -1,
  961.         };
  962.         return types;
  963.     }
  964.     case G_TEXT_PANE: 
  965.     {
  966.         static G_TYPES types[] =
  967.         {
  968.             G_TEXT_PANE,
  969.             -1,
  970.         }; 
  971.         return types;
  972.     }
  973.     default: 
  974.     {
  975.         static G_TYPES types[] = -1; 
  976.         return types;
  977.     }
  978.     }
  979. }
  980.  
  981.  
  982.